package com.sheng.leetcode.year2024.month04.day25;

import org.junit.Test;

/**
 * @author by ls
 * @date 2024/4/25
 * <p>
 * 2739. 总行驶距离<p>
 * <p>
 * 卡车有两个油箱。给你两个整数，mainTank 表示主油箱中的燃料（以升为单位），additionalTank 表示副油箱中的燃料（以升为单位）。<p>
 * 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了 5 升燃料时，如果副油箱至少有 1 升燃料，则会将 1 升燃料从副油箱转移到主油箱。<p>
 * 返回卡车可以行驶的最大距离。<p>
 * 注意：从副油箱向主油箱注入燃料不是连续行为。这一事件会在每消耗 5 升燃料时突然且立即发生。<p>
 * <p>
 * 示例 1：<p>
 * 输入：mainTank = 5, additionalTank = 10<p>
 * 输出：60<p>
 * 解释：<p>
 * 在用掉 5 升燃料后，主油箱中燃料还剩下 (5 - 5 + 1) = 1 升，行驶距离为 50km 。<p>
 * 在用掉剩下的 1 升燃料后，没有新的燃料注入到主油箱中，主油箱变为空。<p>
 * 总行驶距离为 60km 。<p>
 * <p>
 * 示例 2：<p>
 * 输入：mainTank = 1, additionalTank = 2<p>
 * 输出：10<p>
 * 解释：<p>
 * 在用掉 1 升燃料后，主油箱变为空。<p>
 * 总行驶距离为 10km 。<p>
 * <p>
 * 提示：<p>
 * 1 <= mainTank, additionalTank <= 100<p>
 */
public class LeetCode2739 {

    @Test
    public void test01() {
//        int mainTank = 5, additionalTank = 10;
        int mainTank = 1, additionalTank = 2;
        System.out.println(new Solution().distanceTraveled(mainTank, additionalTank));
    }
}

class Solution {
    public int distanceTraveled(int mainTank, int additionalTank) {
        int ans = 0;
        while (mainTank / 5 > 0) {
            // 能跑 5 公里的次数
            int num = mainTank / 5;
            // 剩下的油量
            mainTank %= 5;
            // 加上副油箱的油量
            mainTank += Math.min(additionalTank, num);
            // 副油箱剩余油量
            additionalTank -= Math.min(additionalTank, num);
            ans += num * 5;
        }
        ans += mainTank;
        return ans * 10;
    }
}
